home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
bavarian
/
011-020
/
014_anwendungen_3
/
3-d grafik
/
3d-grafik
(
.txt
)
next >
Wrap
AmigaBASIC Source Code
|
1993-11-04
|
4KB
|
175 lines
'Grafik von Stefan Huchler
CLEAR
FOR j= 0 TO 8
READ sp%(j):NEXT
DATA 65,0,120,0,22200,64,10,0,0
k1=6:k2=3:k3=4
SCREEN 2,640,200,3,2
WINDOW 3,"3D",,8,2
COLOR 2,1:CLS
LOCATE 2,2:PRINT "Räumliche Betrachtung von Funktionen mit der Rot-Grün-Brille"
LOCATE 4,9:PRINT "Geschrieben von Stefan Huchler März 1987"
LOCATE 8,2:PRINT "Auswahl der Funktion : "+CHR$(187)
st3:i$=INKEY$:IF i$="" THEN GOTO st3
WINDOW CLOSE 3
SCREEN CLOSE 2
GOTO auswahl
'Grafik-Fenster öffnen
weiter:
WINDOW CLOSE 3
SCREEN CLOSE 2
SCREEN 2,640,400,3,4
WINDOW 2,"Graphik",,8,2
PALETTE 6,1,1,1
PALETTE 1,0,0,0
PALETTE 0,0,0,0
PALETTE 4,0.33,0.87,0
PALETTE 5,0.93,0.2,0
COLOR 1,2:CLS
'Zeichnen der Funktion
'x-Achsen
'gruen
FOR y1=-17 TO 17 STEP 2
x=100+(y1*5)
z1=FNf(-1.7,y1/10)
y=350-(z1+y1*5):PSET (x,y),4
FOR x1=-16 TO 17
z1= FNf(x1/10,y1/10)
x=x+10
y=350-(z1+5*y1)
LINE STEP(0,0)-(x,y),4
NEXT x1
NEXT y1
'rot
a=17
FOR y1=-17 TO 17 STEP 2
a=a-2:x=100+(y1*5)+3+a/k2
z1=FNf(-1.7,y1/10)
y=350-(z1+y1*5)-k1:PSET (x,y),5
FOR x1=-16 TO 17
z1= FNf(x1/10,y1/10)
x=x+10
y=350-(z1+5*y1)-k1
LINE STEP(0,0)-(x,y),5
NEXT x1
NEXT y1
'y-Achsen
'gruen
x0=-5
FOR x1=-17 TO 17 STEP 2
x0=20+x0:x=x0
z1=FNf(x1/10,-1.7)
y=350-(z1-85):PSET (x,y),4
FOR y1=-16 TO 17
z1= FNf(x1/10,y1/10)
x=x+5
y=350-(z1+5*y1)
LINE STEP(0,0)-(x,y),4
NEXT y1
NEXT x1
'rot
x0=-5
FOR x1=-17 TO 17 STEP 2
x0=20+x0:x=x0
z1=FNf(x1/10,-1.7)
y=350-(z1-85)-k1:PSET (x+8.7,y),5
a=16
FOR y1=-16 TO 17
a=a-1
z1= FNf(x1/10,y1/10)
xx=3+a/k2
x=x+5
y=350-(z1+5*y1)-k1
LINE STEP(0,0)-(x+xx,y),5
NEXT y1
NEXT x1
COLOR 6,2
s$=TRANSLATE$("press any key to continue")
SAY s$,sp%
st2:i$=INKEY$:IF INKEY$="" THEN GOTO st2
'Auswahlmenue zeigen
auswahl:
SCREEN 2,640,200,3,2
WINDOW 3,"3D",,8,2
CLS:LOCATE 1,10:PRINT "Auswahl"
LOCATE 4,5:PRINT "Ende : (0)"
LOCATE 6,5:PRINT "Mulde : (1)"
LOCATE 8,5:PRINT "Hut : (2)"
LOCATE 10,5:PRINT "Glocke : (3)"
LOCATE 12,5:PRINT "Blüte : (4)"
LOCATE 14,5:PRINT "Wanne : (5)"
LOCATE 16,5:PRINT "Gewölbe : (6)"
LOCATE 18,5:PRINT "Welle : (7)"
LOCATE 20,5:PRINT "Sinus : (8)"
LOCATE 22,5:PRINT "Kugel : (9)"
LOCATE 1,45:PRINT "Räumliche Wirkung :"
LOCATE 4,45:PRINT "normal : (n)"
LOCATE 6,45:PRINT "extrem : (e)"
st4:LOCATE k3,59:PRINT CHR$(171):LOCATE k3+2,59:PRINT " ":LOCATE k3-2,59:PRINT " "
st1:i$=INKEY$:IF i$="" THEN GOTO st1
IF i$="n" THEN k1=6:k2=3:k3=4:GOTO st4
IF i$="e" THEN k1=8:k2=2:k3=6:GOTO st4
IF ASC(i$)<48 OR ASC(i$)>57 THEN GOTO st1
ON VAL(i$)+1 GOTO ende,f1,f2,f3,f4,f5,f6,f7,f8,f9
ende:
PALETTE 1,1,1,1
PALETTE 0,0.4,0.6,1
WINDOW CLOSE 3
SCREEN CLOSE 2
END
f1:
DEF FNf(x,y)=150*SIN(SQR(x*x+y*y))
GOTO weiter
f2:
DEF FNf(x,y)=80*(COS(SQR(x*x+y*y))-COS(3*SQR(x*x+y*y))/3+COS(5*SQR(x*x+y*y))/5-COS(7*SQR(x*x+y*y))/7)+150
GOTO weiter
f3:
DEF FNf(x,y)=150*EXP((x*x+y*y)/-2)+100
GOTO weiter
f4:
DEF FNf(x,y)=80*((x*x)^(1/3)+(y*y)^(1/3))-30
GOTO weiter
f5:
DEF FNf(x,y)=100*(EXP(-COS(SQR(x*x+y*y))))
GOTO weiter
f6:
DEF FNf(x,y)=140*(EXP(-(x)*x)+EXP(-(y)*y)-EXP(-(x)*x-(y)*y)+0.5)
GOTO weiter
f7:
DEF FNf(x,y)=20*(SIN(x*5)+SIN(y*5))+110
GOTO weiter
f8:
DEF FNf(x,y)=60*(SIN(x*2)+COS(y*2))+180
GOTO weiter
f9:
DEF FNf(x,y)=100*(SIN(1.5708-ATN(SQR(x*x+y*y)/SQR(ABS(1-(x*x+y*y))))))+50
GOTO weiter